var express = require('express')
var cors = require('cors')
var app = express()

// function handleCors(req, res, next) {
//   // 允许的请求方法
//   res.setHeader(
//     'Access-Control-Allow-Headers',
//     'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , reqSource,xx'
//   )
//   // 允许的请求方法
//   res.setHeader('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')

//   // 允许携带凭据（cookies）
//   res.setHeader('Access-Control-Allow-Credentials', true)

//   // 从请求头中获取 Origin 值
//   const origin = req.headers.origin
//   // 请求包含凭据（如 cookies、HTTP 身份验证或 TLS 客户端证书）时，不能使用通配符 *。
//   // 检查请求来源是否允许跨域访问
//   if (origin && (origin === 'http://127.0.0.1:8084' || origin === 'http://127.0.0.1:5173')) {
//     // 允许特定的来源跨域访问
//     res.setHeader('Access-Control-Allow-Origin', origin)
//   }

//   // 如果是 OPTIONS 请求，直接返回，不进入下一个中间件
//   if (req.method === 'OPTIONS') {
//     return res.send({ code: 204, err: '' })
//   } else {
//     next()
//   }
// }

// app.use(handleCors)

function onLogHistory(req, res, next) {
  console.log('请求历史记录：')
  console.log(req.url)
  // console.log(res)
  console.log('请求历史记录结束')
  next()
}
app.use(onLogHistory)

// 允许所有源访问
app.use(
  cors({
    credentials: true,
    // // 请求包含凭据（如 cookies、HTTP 身份验证或 TLS 客户端证书）时，不能使用通配符 *。
    origin: ['http://127.0.0.1:5173', 'http://127.0.0.1:8084']
  })
)

// 定义路由和其他中间件
app.get('/api/data', (req, res) => {
  // console.log(req.url)

  // res.send({ message: 'Hello from Node.js!' })
  // 1.
  const funName = req.query.callback
  // 2.
  const data = { name: 'zj', age: '22' }
  // 3.
  const scriptStr = `${funName}(${JSON.stringify(data)})`
  // 4.
  res.send(scriptStr)
})

app.post('/api/info', (req, res) => {
  setTimeout(() => {
    res.send({ message: 'info from Node.js!' })
  }, 4000)
})

// 启动服务器
const port = 3000
app.listen(port, () => {
  console.log(`Server is running on port ${port}`)
})
